Math software has been developed to perform symbolic and/or numerical mathematical computations that have been otherwise performed by humans. For educational users, such as advanced junior high school students, high school students and college students, math software tools may be used to assist in the learning process. Math software can provide efficient results for what are often time consuming and tedious tasks if performed manually. Once a student has an understanding of a process or calculation, using that process or calculation as a building block in other, perhaps more complex, calculations or processes is an important task. However, the time consuming nature of performing such a task may hinder the amount of tasks that such a student may accomplish. Thus, efficient software tools may assist in the educational process by reducing the amount of such tasks. Furthermore, such software may provide encouragement for the learning of different processes and concepts. In general, for a math software to function, a computer language is required to convert a math problem defined in natural mathematics language, which includes symbolic expressions in natural math notations, and hybrid statements mixing natural language and symbolic expressions for defining operations applicable to and relationships among mathematical entities, into an intermediate representation such as abstract syntax tree (AST) that can invoke appropriate algorithms written in, for example, other lower level languages such as C or Fortran that perform the defined mathematical computations.
The usage of math software in is still very limited especially in education, considering the vast accessibility of computers in schools and household. Many factors contribute to this phenomenon. Among them the two most important ones that are directly related to software are:                1. Disconnection between computer languages employed by math software and the mathematical language; and        2. Inadequate communication between the software and student users.The first factor is manifested by: A) Significant differences in syntax for symbolic expressions between the computer languages employed by math software and natural math notation; and B). Lack of systematic representation of the hybrid syntax in computer languages.        
Item A causes many users to spend a long time learning to use the software, creating a significant barrier to use and consequently impeding market acceptance. The impact is even worse for student users: instead of assisting, the software/devices actually complicate a student's learning because he or she is forced to navigate simultaneously two different sets of notations, one from a textbook and another for the software.
Item B makes it difficult for many users to define math problems since the expressive power of symbolic expressions is nevertheless limited beyond imperatives. Consequently, users have to decompose these problems and write procedural code to solve the problems using primitive constructs provided by the language. This is obviously not plausible for most students learning math or professional users that are not programming-savvy. In fact, it defies the purpose of mathematically-oriented languages and software. For instance, any individual able to write detailed procedural code to solve a math problem is less likely to need the help of math software in the first place.
The most noticeable inadequacy in communication between math software and its users is the lack of procedural details documenting how a problem is solved. That deficiency is more consequential for educational applications: elucidating how a problem is solved and elaborating what are the concepts behind the solution are at least as important as the answer itself. For professional users who use mathematics in their daily work, such a gap in syntaxes can impact their acceptance of the software, especially for potential new users. Such users may not have time or the desire to learn a new language.